@怪人
2年前 提问
1个回答
操作系统平台加固要考虑哪些方面
007bug
2年前
官方采纳
依据平台加固的总体指导思想,平台加固应从以下几方面考虑。
端口和进程
网络操作系统使用进程向外提供服务,减少无用软件及服务的任务就是要在所有系统进程中找出多余进程。由于进程通过打开网络端口向外提供服务,所以找出多余进程的最快方法是观察进程及端口对应表。Netstat命令显示协议统计和当前的TCP/IP网络连接,该命令只有在安装了TCP/IP协议后才可以使用。通过使用该命令可以列出一个系统上所有打开的TCP/IP网络监听端口。这些打开着的端口正是入侵者所要攻击的,因为它们通向系统平台内部。因此,作为平台加固的一部分,用户使用Netstat命令来识别出无关端口,并由此找到需要删除或禁用的服务。
安装系统补丁
所有软件都有缺陷。为了修复这些错误,供应商会发布软件补丁。如果没有这些补丁,组织很容易遭受攻击。在有很严格的更改控制策略的组织中,及时安装补丁会是一个问题。对补丁的彻底测试是这个过程的关键部分,因为供应商在解决旧问题时,有可能会引入新的问题。而对于和安全缺陷无关的补丁来说没有问题。但是,入侵者搜索和利用安全弱点的速度很快,所以要求有更快的安全补丁修正过程。企业必须注意安全补丁的发布,并随时准备快速地使用它们。
密码强度及存储
计算平台速度的巨大改进,以及人们对现代密码系统的兴趣和理解的增加,向平台安全提出了新的挑战。UNIX系统传统上使用一些快速类型的哈希算法来对存放的用户密码进行加密。为了允许低特权进程使用这个密码系统,密码存储(依赖于加密技术来保护它)需要全局性的可读许可。
系统允许的密码强度是传统UNIX系统的另一薄弱之处。密码强度取决于密码中使用的字符数和随机性。越来越快速的计算机和可以免费得到的解密软件已经使密码存储越来越容易受到离线攻击,因为几乎任何用户都可以访问用户口令的密文。现代的PC机有足够的能力解密这些脆弱的口令。
UNIX系统能够为用户口令存储添加保护层,只需要设置这些系统就可以了。现代的UNIX系统(甚至一些合理修补的遗留系统)对无特权用户隐藏了用户口令的密文,但是仍然允许他们访问认证子系统(称为阴影)。它们也可以阻止用户使用容易被猜测到的字典词汇作为用户口令并要求用户定期更换口令。UNIX系统有一些固有的对用户透明的功能,只需要激活它们就可以了。
Windows也包含了保护本地密码存储完整性的方法。通过一次性使用syskey命令,可以使操作系统在密码存储中使用更强的加密技术。Windows也可以要求用户使用更长、更随机的密码。
用户账户
用户账户标识了需要访问平台资源的实体(无论是应用程序进程还是人)。操作系统通过权限和优先权将用户账户与其访问控制系统相关联。因为用户账户是合法进入系统的机制,所以入侵者常常试图利用用户账户管理和访问控制中的缺陷。如果可以作为合法用户轻松地登录系统,那么为什么还要浪费时间去做自定义缓冲器溢出攻击呢?用户账户管理的弱点有5个方面:弱密码、制造商默认的账户、基于角色的账户、公司默认账户,以及废弃账户。在任何情况下,平台加固的目标是将用户账户数目减少到所需的绝对最小值。
用户特权
用户特权是UNIX系统安全的基础之一。正确实现的用户特权应该确保用户只具有他们执行任务所需要的访问权限。UNIX系统中的超级用户是一个享有完全和不受限系统资源访问权的用户账户。这个账户是为专门需要高级别访问的系统管理任务保留的,但是系统管理员常常将之用于他们普通的日常活动。大多数UNIX系统不提供一个中间级别的系统特权,所以超级用户特权往往被授予比完成任务实际所需的数目多得多的用户。因为超级用户账户可以破坏和修改系统安全功能,所以系统管理员每次给予这个关键的访问级别,就是在增加系统被攻击的可能。并且,由于只有一个超级用户账户,所以要跟踪谁在使用它是很困难的。
SUDO(Set User and Do)设计使系统管理员能够给超级用户更精细级别的访问权。可以为每一个用户指派通常只能作为超级用户运行的特定的应用程序和功能,而不是真正地使用超级用户账户。SUDO也可以启用详细的日志记录,使得可以根据任何运行于SUDO的超级用户功能追踪到某个特定的用户。在特定的应用中,使用SUDO意味着没有人使用过超级用户账户。
文件系统安全
通过在程序文件上设置SUID标志,某一个进程可以临时提升其特权用以完成某项任务(例如,访问文件passwd)。当程序执行时,可以暂时得到这些额外的特权而不用被全授予如此高的特权。这个SUID标志常常过度使用,当它与被黑客修改过的软件包结合时,被修改的程序执行后会使某个用户得到全时提升的系统权利。UNIX系统可能有很多带有这个标志的组件,但是通常只需要它们中的一小部分。建议使用命令从整个系统中删除不需要SUID标志程序的SUID标志。
远程访问的安全
Telnet和rlogin是UNIX系统上最常用的远程访问方式。这些系统都不采用加密技术来保护远程访问会话。一种被动的网络监听攻击可以看到用户在进入Telnet或者rlogin会话中按下的每一个键。安全Shell(SSH)是一种在UNIX及Window系统上使用的软件包,它提供与Telnet和rlogin相同功能,但增加了加密会话功能。这个软件包已经成为用加密和访问控制的各种可配置级别进行安全远程访问的行业标准。
服务标题、操作系统指纹
前面已经提到过,平台加固要减少系统泄露的信息数。默认情况下,类似Telnet和FTP的服务在被访问时,会显示一个描述其软件版本和平台类型的标题。攻击者使用这个信息,通过检查任何含有关于特定软件版本和类型的可利用信息的数据库,可以确定该平台是否有可利用的漏洞。许多入侵者通过扫描Internet的整个区段,寻找他们已知可利用的服务的特定版本漏洞。这个服务信息对平台的正常运行完全是不必要的,因此完全可以将之删除。这样,攻击者就只能盲目地攻击服务了。
另外一个对攻击者特别有用的是系统平台的指纹信息。通过使用特定的工具查询系统的网络服务,入侵者可以将结果与属性数据库相匹配,以确定操作系统的类型和版本。这样,攻击者可以使攻击针对特定操作系统的弱点。通常,应把这种指纹信息伪装成其他操作系统,或者可以伪装成不与任何操作系统相匹配。与服务标题一样,做这种修改不会影响平台的正常功能,而且可以大大增强防御能力。